namespace WeWorkApp.Api.Models.WeChat
{
    /// <summary>
    /// 企业微信JSSDK配置数据传输对象
    /// </summary>
    public class JsSdkConfigDto
    {
        /// <summary>
        /// 企业的CorpID
        /// </summary>
        public string CorpId { get; set; } = string.Empty;

        /// <summary>
        /// 应用的AgentID
        /// </summary>
        public string AgentId { get; set; } = string.Empty;

        /// <summary>
        /// 生成签名的时间戳
        /// </summary>
        public long Timestamp { get; set; }

        /// <summary>
        /// 生成签名的随机串
        /// </summary>
        public string NonceStr { get; set; } = string.Empty;

        /// <summary>
        /// 签名
        /// </summary>
        public string Signature { get; set; } = string.Empty;

        /// <summary>
        /// 调用的API列表
        /// </summary>
        public List<string> JsApiList { get; set; } = new List<string>();

        /// <summary>
        /// 是否开启调试模式，调用的所有api的返回值会在客户端alert出来
        /// </summary>
        public bool Debug { get; set; } = false;
    }

    /// <summary>
    /// JSSDK配置请求参数
    /// </summary>
    public class JsSdkConfigRequestDto
    {
        /// <summary>
        /// 当前网页的URL，不包含#及其后面部分
        /// </summary>
        public string Url { get; set; } = string.Empty;

        /// <summary>
        /// 企业的CorpID（可选，如果不传则使用默认配置）
        /// </summary>
        public string? CorpId { get; set; }

        /// <summary>
        /// 应用的AgentID（可选，如果不传则使用默认配置）
        /// </summary>
        public string? AgentId { get; set; }

        /// <summary>
        /// 需要使用的JS接口列表（可选，如果不传则使用默认列表）
        /// </summary>
        public List<string>? JsApiList { get; set; }

        /// <summary>
        /// 是否开启调试模式（可选，默认为false）
        /// </summary>
        public bool? Debug { get; set; }
    }

    /// <summary>
    /// 企业微信用户身份信息
    /// </summary>
    public class UserInfoDto
    {
        /// <summary>
        /// 成员UserID
        /// </summary>
        public string UserId { get; set; } = string.Empty;

        /// <summary>
        /// 成员姓名
        /// </summary>
        public string Name { get; set; } = string.Empty;

        /// <summary>
        /// 成员头像url
        /// </summary>
        public string Avatar { get; set; } = string.Empty;

        /// <summary>
        /// 成员性别。0表示未定义，1表示男性，2表示女性
        /// </summary>
        public int Gender { get; set; }

        /// <summary>
        /// 成员手机号
        /// </summary>
        public string Mobile { get; set; } = string.Empty;

        /// <summary>
        /// 成员邮箱
        /// </summary>
        public string Email { get; set; } = string.Empty;

        /// <summary>
        /// 成员所在部门id列表
        /// </summary>
        public List<int> Department { get; set; } = new List<int>();

        /// <summary>
        /// 成员职务信息
        /// </summary>
        public string Position { get; set; } = string.Empty;

        /// <summary>
        /// 成员状态。1=已激活，2=已禁用，4=未激活，5=退出企业
        /// </summary>
        public int Status { get; set; }

        /// <summary>
        /// 成员启用状态。1表示启用的成员，0表示被禁用的成员
        /// </summary>
        public int Enable { get; set; }
    }

    /// <summary>
    /// 获取用户身份请求参数
    /// </summary>
    public class GetUserInfoRequestDto
    {
        /// <summary>
        /// 通过成员授权获取到的code，最大为512字节。每次成员授权带上的code将不一样，code只能使用一次，5分钟未被使用自动过期。
        /// </summary>
        public string Code { get; set; } = string.Empty;

        /// <summary>
        /// 企业的CorpID（可选，如果不传则使用默认配置）
        /// </summary>
        public string? CorpId { get; set; }
    }
}